<!DOCTYPE html>
<html lang="en"><head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Begin Jekyll SEO tag v2.5.0 -->
<title>This Week in Rust and WebAssembly 15 | Rust and WebAssembly</title>
<meta name="generator" content="Jekyll v3.7.4" />
<meta property="og:title" content="This Week in Rust and WebAssembly 15" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Hello and welcome to another issue of This Week in Rust and WebAssembly!" />
<meta property="og:description" content="Hello and welcome to another issue of This Week in Rust and WebAssembly!" />
<link rel="canonical" href="https://rustwasm.github.io/2019/03/28/this-week-in-rust-and-wasm-015.html" />
<meta property="og:url" content="https://rustwasm.github.io/2019/03/28/this-week-in-rust-and-wasm-015.html" />
<meta property="og:site_name" content="Rust and WebAssembly" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2019-03-28T00:00:00+00:00" />
<script type="application/ld+json">
{"headline":"This Week in Rust and WebAssembly 15","dateModified":"2019-03-28T00:00:00+00:00","datePublished":"2019-03-28T00:00:00+00:00","description":"Hello and welcome to another issue of This Week in Rust and WebAssembly!","mainEntityOfPage":{"@type":"WebPage","@id":"https://rustwasm.github.io/2019/03/28/this-week-in-rust-and-wasm-015.html"},"url":"https://rustwasm.github.io/2019/03/28/this-week-in-rust-and-wasm-015.html","@type":"BlogPosting","@context":"http://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/main.css">
        <link rel="stylesheet" href="/assets/extra.css"><link type="application/atom+xml" rel="alternate" href="https://rustwasm.github.io/feed.xml" title="Rust and WebAssembly" /></head>
<body><header class="site-header" role="banner">

        <div class="wrapper"><a class="site-title" rel="author" href="/">
            <img src="/assets/rustwasm.png" style="max-height: 2em"/>
            Rust and WebAssembly
          </a><nav class="site-nav">
              <input type="checkbox" id="nav-trigger" class="nav-trigger" />
              <label for="nav-trigger">
                <span class="menu-icon">
                  <svg viewBox="0 0 18 15" width="18px" height="15px">
                    <path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
                    <path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
                    <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
                  </svg>
                </span>
              </label>

              <div class="trigger">
                  <a class="page-link" href="/docs.html">📚 Learn</a>
                  <a class="page-link" href="/">📖 Blog</a>
                  <a class="page-link" href="https://github.com/rustwasm/team/blob/master/README.md#get-involved">👯 Get Involved</a>
              </div>
            </nav></div>
      </header>
<div class="wrapper" style="background:rgb(245, 170, 170);border: 5px solid red;">
  This project and website is <a href="https://blog.rust-lang.org/inside-rust/2025/07/21/sunsetting-the-rustwasm-github-org/">no longer maintained</a>
</div>
<main class="page-content" aria-label="Content"><div class="wrapper">
        <article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">

  <header class="post-header">
    <h1 class="post-title p-name" itemprop="name headline">This Week in Rust and WebAssembly 15</h1>
    <p class="post-meta">
      <time class="dt-published" datetime="2019-03-28T00:00:00+00:00" itemprop="datePublished">Mar 28, 2019
      </time></p>
  </header>

  <div class="post-content e-content" itemprop="articleBody">
    <p>Hello and welcome to another issue of <em>This Week in Rust and WebAssembly</em>!</p>

<p><a href="https://rust-lang.org">Rust</a> is a systems language pursuing the trifecta:
safety, concurrency, and speed.</p>

<p><a href="http://webassembly.org">WebAssembly</a> is a stack-based virtual machine and
instruction set. It is fast, safe, portable, and part of the open Web
platform. By compiling to WebAssembly, we can run Rust code on the Web!</p>

<p>This is a weekly summary of Rust and WebAssembly’s progress and community.</p>

<p>Did we miss something? Tweet to us at <a href="https://twitter.com/rustwasm">@rustwasm</a>
or <a href="https://github.com/rustwasm/rustwasm.github.io">send us a pull request</a>.</p>

<p><strong>Want to get involved in Rust and WebAssembly? <a href="https://github.com/rustwasm/team/blob/master/README.md#get-involved">Join the Rust and WebAssembly working group!</a></strong></p>

<h2 id="news-and-blog-posts-from-around-the-web">News and Blog Posts from Around the Web</h2>

<p><em>Want to make sure something ends up on this list next time we publish an issue?
<a href="https://github.com/rustwasm/team/issues/79">Leave a comment on this issue.</a></em></p>

<ul>
  <li><a href="https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/"><strong>Standardizing WASI: A system interface to run WebAssembly outside the
web</strong></a>
    <ul>
      <li>@alexcrichton already has a pull request to <a href="https://github.com/rust-lang/rust/pull/59464">add a <code class="highlighter-rouge">wasm32-unknown-wasi</code>
target</a> for Rust!</li>
    </ul>
  </li>
  <li><code class="highlighter-rouge">RustVolley</code> is a reimplementation of the Blobby Volley 2 game in Rust and Wasm
    <ul>
      <li><a href="https://github.com/RustyVolley/RustyVolleySrc">Source</a></li>
      <li><a href="https://rustyvolley.github.io/WebDemo/">Live Demo</a></li>
    </ul>
  </li>
  <li><a href="https://blog.cloudflare.com/introducing-wrangler-cli/">CloudFlare’s new <code class="highlighter-rouge">wrangler</code> CLI tool lets you deploy Rust-generated Wasm on
CloudFlare workers</a></li>
  <li><a href="https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime">Fastly open sources Lucet: a native WebAssembly compiler and
runtime.</a>
Its built with Rust on top of Cranelift and supports WASI.</li>
</ul>

<h2 id="updates-from-rustwasm">Updates from <a href="https://github.com/rustwasm"><code class="highlighter-rouge">rustwasm/*</code></a></h2>

<p><a href="https://internals.rust-lang.org/t/welcome-pauan-to-the-rust-and-webassembly-domain-working-group-core-team/9707"><strong>🎉 Welcome @Pauan to the Rust and WebAssembly working group core
team! 🎉</strong></a></p>

<h3 id="rfcs">RFCs</h3>

<h4 id="new-rfcs">New RFCs</h4>

<p>None.</p>

<h4 id="final-comment-period-rfcs">Final Comment Period RFCs</h4>

<ul>
  <li><a href="https://github.com/rustwasm/rfcs/pull/9">Add an amendment to the RFC process</a></li>
</ul>

<h4 id="merged-rfcs">Merged RFCs</h4>

<p>None.</p>

<h3 id="working-group-meetings">Working Group Meetings</h3>

<ul>
  <li><a href="https://www.youtube.com/watch?v=gaTwOc0eGb4">Watch the recording of this week’s working group meeting on
YouTube</a></li>
  <li><a href="https://github.com/rustwasm/team/issues/264">Come join us at next week’s working group
meeting!</a></li>
</ul>

<h3 id="gloo">Gloo</h3>

<ul>
  <li><a href="https://rustwasm.github.io/2019/03/26/gloo-onion-layers.html"><strong>Gloo Update: Onion Layers, Timers, and
Events</strong></a></li>
  <li>@Aehmlo <a href="https://github.com/rustwasm/gloo/pull/38">split up the <code class="highlighter-rouge">gloo_timers</code> crate’s public
API</a> to use <code class="highlighter-rouge">callbacks</code> and
<code class="highlighter-rouge">futures</code> submodules, as we collectively agreed upon in other issues.</li>
  <li>@cbrevik <a href="https://github.com/rustwasm/gloo/pull/32">implemented the <code class="highlighter-rouge">gloo_console_timer</code>
crate,</a> which provides scoped
closures and RAII-style helpers for working with <code class="highlighter-rouge">console.time</code> and
<code class="highlighter-rouge">console.timeEnd</code>.</li>
  <li>@OddCoincidence <a href="https://github.com/rustwasm/gloo/pull/48">updated the <code class="highlighter-rouge">gloo_timers</code>
internals</a> to use
<code class="highlighter-rouge">wasm_bindgen::closures::Closure::once</code> for <code class="highlighter-rouge">setTimeout</code>.</li>
  <li>@RyLev added some initial <a href="https://github.com/rustwasm/gloo/pull/46">Azure Pipelines continuous integration
tests</a> for Gloo.</li>
  <li>@David-OConnor added the <a href="https://github.com/rustwasm/gloo/pull/45">skeleton of an <code class="highlighter-rouge">mdbook</code>
guide</a> for Gloo.</li>
</ul>

<h3 id="wasm-bindgen"><code class="highlighter-rouge">wasm-bindgen</code></h3>

<ul>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-bindgen/pull/1384">tweaked the <code class="highlighter-rouge">no-modules</code> target’s generated JavaScript glue for
instantiating Wasm
modules</a> to support
CloudFlare workers (and other environments where <code class="highlighter-rouge">x instanceof
WebAssembly.Module</code> might fail, like across <code class="highlighter-rouge">&lt;iframe&gt;</code>s)</li>
  <li>@alexcrichton made it so that our emitted JS glue for reflecting Rust closures
as JS functions will properly <a href="https://github.com/rustwasm/wasm-bindgen/pull/1385">detect and protect against use-after-free from
the JS side.</a></li>
  <li>@alexcrichton fixed a bug where Rust structs exported as JS <a href="https://github.com/rustwasm/wasm-bindgen/pull/1383">didn’t always
emit the JS classes glue in a deterministic
order.</a></li>
  <li>@fitzgen <a href="https://github.com/rustwasm/wasm-bindgen/pull/1382">made the “without a JS bundler” example use <code class="highlighter-rouge">wasm-pack build
--target web</code>,</a> now that
its supported in the latest <code class="highlighter-rouge">wasm-pack</code> release.</li>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-bindgen/pull/1369">cleaned up the <code class="highlighter-rouge">wasm-bindgen</code> CLI’s
options</a> to take <code class="highlighter-rouge">--target
blah</code> instead of <code class="highlighter-rouge">--blah</code> (which still exist but are deprecated).</li>
  <li>@stevebob <a href="https://github.com/rustwasm/wasm-bindgen/pull/1358">enabled <code class="highlighter-rouge">mdbook</code>’s link checking tests for the <code class="highlighter-rouge">wasm-bindgen</code>
guide</a> to our continuous
integration tests.</li>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-bindgen/pull/1305">implemented
<code class="highlighter-rouge">rustwasm/rfcs#8</code></a> to
enable transitive crates dependencies on npm packages.</li>
  <li>@RReverser <a href="https://github.com/rustwasm/wasm-bindgen/pull/1403">added the <code class="highlighter-rouge">constructor</code>
property</a> to
<code class="highlighter-rouge">js_sys::Object</code>.</li>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-bindgen/pull/1401">fixed sending large
<code class="highlighter-rouge">u32</code>s</a> from Wasm to JS.</li>
  <li>@RReverser <a href="https://github.com/rustwasm/wasm-bindgen/pull/1398">consistently exposed
<code class="highlighter-rouge">is_like_none</code></a> for our
generated JS glue, fixing a bug along the way.</li>
  <li>@RReverser <a href="https://github.com/rustwasm/wasm-bindgen/pull/1397">simplified the ABI
representation</a> of
<code class="highlighter-rouge">Option&lt;char&gt;</code>.</li>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-bindgen/pull/1395">migrated all the <code class="highlighter-rouge">wasm-bindgen-*</code>
crates</a> to Rust 2018
edition.</li>
  <li>@RReverser <a href="https://github.com/rustwasm/wasm-bindgen/pull/1393">made iterating over JS objects via the JS iteration protocol
faster</a> by removing
redundant property string decoding.</li>
  <li>@RReverser <a href="https://github.com/rustwasm/wasm-bindgen/pull/1391">made a special version of passing strings from JS to
Wasm</a> when we are
targeting Node.js that is faster than using Node.js’s <code class="highlighter-rouge">TextEncoder</code>
implementation.</li>
</ul>

<h3 id="wasm-pack"><code class="highlighter-rouge">wasm-pack</code></h3>

<ul>
  <li>@alexcrichton <a href="https://github.com/rustwasm/wasm-pack/pull/598">fixed a panic</a>
that could happen when installing the <code class="highlighter-rouge">wasm-bindgen</code> CLI tool.</li>
</ul>

<h2 id="requests-for-contribution">Requests for Contribution</h2>

<p><strong>Want to get involved in Rust and WebAssembly? <a href="https://github.com/rustwasm/team/blob/master/README.md#get-involved">Join the Rust and WebAssembly
working group!</a></strong></p>

<h3 id="new-good-first-issues">New Good First Issues</h3>

<ul>
  <li><a href="https://github.com/rustwasm/wasm-bindgen/issues/1390"><code class="highlighter-rouge">wasm-bindgen</code>: <code class="highlighter-rouge">.d.ts</code> file for <code class="highlighter-rouge">--web</code> target does not define the <code class="highlighter-rouge">init()</code> function</a></li>
  <li><a href="https://github.com/rustwasm/wasm-bindgen/issues/1387"><code class="highlighter-rouge">wasm-bindgen</code>: Closures should implement <code class="highlighter-rouge">std::fmt::Debug</code></a></li>
  <li><a href="https://github.com/rustwasm/gloo/issues/41">Gloo: Help ensure we have tracking issues on file for making utility crates for all Web platform features</a></li>
</ul>

<h3 id="new-help-wanted-issues">New “Help Wanted” Issues</h3>

<ul>
  <li><a href="https://github.com/rustwasm/wasm-bindgen/issues/1399"><code class="highlighter-rouge">wasm-bindgen</code>: Closures should accept references as arguments</a></li>
</ul>

  </div><a class="u-url" href="/2019/03/28/this-week-in-rust-and-wasm-015.html" hidden></a>
</article>

      </div></main><footer class="site-footer h-card">
    <data class="u-url" href="/"></data>
  
    <div class="wrapper">
  
      <h2 class="footer-heading">Rust and WebAssembly</h2>
  
      <div class="footer-col-wrapper">
        <div class="footer-col footer-col-1">
          <ul class="contact-list">
            <li class="p-name">Rust and WebAssembly</li></ul>
        </div>
  
        <div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/rustwasm"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#github"></use></svg> <span class="username">rustwasm</span></a></li><li><a href="https://www.twitter.com/rustwasm"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">rustwasm</span></a></li></ul>
</div>
  
        <div class="footer-col footer-col-3">
          <p>Stay up to date with events, learning resources, and recent developments in Rust and WebAssembly community.</p>
        </div>
      </div>
  
    </div>
  
  </footer><!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-85933208-2"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-85933208-2');
</script>
</body>

</html>
